# 作者: Isearph
# 创建日期: 2025年6月13日
# 作者邮箱: 2665497226@qq.com


import time
from datetime import date
import sxtwl


Month_FR = ['Pluviôse', 'Ventôse', 'Germinal', 'Floréal', 'Prairial', 'Messidor',
            'Thermidor', 'Fructidor', 'Vendémiaire', 'Brumaire', 'Frimaire', 'Nivôse']
Month_CH = ['雨月', '风月', '芽月', '花月', '牧月', '获月',
            '热月', '菓月', '酿月', '雾月', '霜月', '雪月']
Month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
thresholds = [20, 19, 21, 20, 20, 19, 19, 18, 22, 22, 21, 21]  # 每月的分界日
RegularYearDay_FR = ['Raisin', 'Safran', 'Châtaigne', 'Colchique', 'Cheval', 'Balsamine', 'Carotte', 'Amarante', 'Panais', 'Cuve', 'Pomme de terre', 'Immortelle', 'Potiron', 'Réséda', 'Âne', 'Belle-de-nuit', 'Citrouille', 'Sarrasin', 'Tournesol', 'Pressoir', 'Chanvre', 'Pêche', 'Navet', 'Amaryllis', 'Bœuf', 'Aubergine', 'Piment', 'Tomate', 'Orge', 'Tonneau',
                     'Pomme', 'Céleri', 'Poire', 'Betterave', 'Oie', 'Héliotrope', 'Figue', 'Scorsonère', 'Alisier', 'Charrue', 'Salsifis', 'Mâcre', 'Topinambour', 'Endive', 'Dindon', 'Chervis', 'Cresson', 'Dentelaire', 'Grenade', 'Herse', 'Bacchante', 'Azerole', 'Garance', 'Orange', 'Faisan', 'Pistache', 'Macjonc', 'Coing', 'Cormier', 'Rouleau',
                     'Raiponce', 'Turneps', 'Chicorée', 'Nèfle', 'Cochon', 'Mâche', 'Chou-fleur', 'Miel', 'Genièvre', 'Pioche', 'Cire', 'Raifort', 'Cèdre', 'Sapin', 'Chevreuil', 'Ajonc', 'Cyprès', 'Lierre', 'Sabine', 'Hoyau', 'Érable sucré', 'Bruyère', 'Roseau', 'Oseille', 'Grillon', 'Pignon', 'Liège', 'Truffe', 'Olive', 'Pelle',
                     'Tourbe', 'Houille', 'Bitume', 'Soufre', 'Chien', 'Lave', 'Terre végétale', 'Fumier', 'Salpêtre', 'Fléau', 'Granit', 'Argile', 'Ardoise', 'Grès', 'Lapin', 'Silex', 'Marne', 'Pierre à chaux', 'Marbre', 'Van', 'Pierre à plâtre', 'Sel', 'Fer', 'Cuivre', 'Chat', 'Étain', 'Plomb', 'Zinc', 'Mercure', 'Crible',
                     'Lauréole', 'Mousse', 'Fragon', 'Perce neige', 'Taureau', 'Laurier thym', 'Amadouvier', 'Mézéréon', 'Peuplier', 'Cognée', 'Ellébore', 'Brocoli', 'Laurier', 'Avelinier', 'Vache', 'Buis', 'Lichen', 'If', 'Pulmonaire', 'Serpette', 'Thlaspi', 'Thymèle', 'Chiendent', 'Trainasse', 'Lièvre', 'Guède', 'Noisetier', 'Cyclamen', 'Chélidoine', 'Traîneau',
                     'Tussilage', 'Cornouiller', 'Violier', 'Troène', 'Bouc', 'Asaret', 'Alaterne', 'Violette', 'Marceau', 'Bêche', 'Narcisse', 'Orme', 'Fumeterre', 'Vélar', 'Chèvre', 'Épinard', 'Doronic', 'Mouron', 'Cerfeuil', 'Cordeau', 'Mandragore', 'Persil', 'Cochléaria', 'Pâquerette', 'Thon', 'Pissenlit', 'Sylvie', 'Capillaire', 'Frêne', 'Plantoir',
                     'Primevère', 'Platane', 'Asperge', 'Tulipe', 'Poule', 'Bette', 'Bouleau', 'Jonquille', 'Aulne', 'Couvoir', 'Pervenche', 'Charme', 'Morille', 'Hêtre', 'Abeille', 'Laitue', 'Mélèze', 'Ciguë', 'Radis', 'Ruche', 'Gainier', 'Romaine', 'Marronnier', 'Roquette', 'Pigeon', 'Lilas', 'Anémone', 'Pensée', 'Myrtille', 'Greffoir',
                     'Rose', 'Chêne', 'Fougère', 'Aubépine', 'Rossignol', 'Ancolie', 'Muguet', 'Champignon', 'Hyacinthe', 'Râteau', 'Rhubarbe', 'Sainfoin', "Bâton-d'or", 'Chamérisier', 'Ver à soie', 'Consoude', 'Pimprenelle', "Corbeille d'or", 'Arroche', 'Sarcloir', 'Statice', 'Fritillaire', 'Bourrache', 'Valériane', 'Carpe', 'Fusain', 'Civette', 'Buglosse', 'Sénevé', 'Houlette',
                     'Luzerne', 'Hémérocalle', 'Trèfle', 'Angélique', 'Canard', 'Mélisse', 'Fromental', 'Martagon', 'Serpolet', 'Faux', 'Fraise', 'Bétoine', 'Pois', 'Acacia', 'Caille', 'Œillet', 'Sureau', 'Pavot', 'Tilleul', 'Fourche', 'Barbeau', 'Camomille', 'Chèvrefeuille', 'Caille-lait', 'Tanche', 'Jasmin', 'Verveine', 'Thym', 'Pivoine', 'Chariot',
                     'Seigle', 'Avoine', 'Oignon', 'Véronique', 'Mulet', 'Romarin', 'Concombre', 'Échalote', 'Absinthe', 'Faucille', 'Coriandre', 'Artichaut', 'Giroflée', 'Lavande', 'Chamois', 'Tabac', 'Groseille', 'Gesse', 'Cerise', 'Parc', 'Menthe', 'Cumin', 'Haricot', 'Orcanète', 'Pintade', 'Sauge', 'Ail', 'Vesce', 'Blé', 'Chalemie',
                     'Épeautre', 'Bouillon-blanc', 'Melon', 'Ivraie', 'Bélier', 'Prêle', 'Armoise', 'Carthame', 'Mûre', 'Arrosoir', 'Panic', 'Salicorne', 'Abricot', 'Basilic', 'Brebis', 'Guimauve', 'Lin', 'Amande', 'Gentiane', 'Écluse', 'Carline', 'Câprier', 'Lentille', 'Aunée', 'Loutre', 'Myrte', 'Colza', 'Lupin', 'Coton', 'Moulin',
                     'Prune', 'Millet', 'Lycoperdon', 'Escourgeon', 'Saumon', 'Tubéreuse', 'Sucrion', 'Apocyn', 'Réglisse', 'Échelle', 'Pastèque', 'Fenouil', 'Épine-vinette', 'Noix', 'Truite', 'Citron', 'Cardère', 'Nerprun', 'Tagette', 'Hotte', 'Églantier', 'Noisette', 'Houblon', 'Sorgho', 'Écrevisse', 'Bigarade', "Verge d'or", 'Maïs', 'Marron', 'Panier'
                     'Jour de la Vertu', 'Jour du Génie', 'Jour du Travail', "Jour de l'Opinion", 'Jour des Récompenses']
RegularYearDay_CH = ['葡萄日', '藏红花日', '板栗日', '秋水仙日', '马日', '凤仙花日', '红萝卜日', '苋日', '欧洲防风日', '酒槽日', '马铃薯日', '蜡菊日', '笋瓜日', '木犀草日', '驴日', '紫茉莉日', '南瓜日', '荞麦日', '向日葵日', '榨酒机日', '麻日', '桃日', '芜菁日', '孤挺花日', '黄牛日', '茄日', '辣椒日', '西红柿日', '大麦日', '桶日',
            '苹果日', '芹菜日', '梨日', '甜菜日', '鹅日', '天芥菜日', '无花果日', '鸦葱日', '野生楸树日', '犁日', '婆罗门参日', '菱角日', '洋姜日', '苦苣日', '火鸡日', '参芹日', '水田芥日', '白花丹日', '石榴日', '耖日', '香根菊日', '意大利山楂日', '染色茜草日', '橙子日', '雉鸡日', '开心果日', '玫红山黧豆日', '榅桲日', '欧亚花楸日', '磙日',
            '角风铃草日', '饲料甜菜日', '菊苣日', '欧山楂日', '猪日', '野苣日', '花椰菜日', '蜂蜜日', '刺柏日', '十字镐日', '蜡日', '辣根日', '雪松日', '枞树日', '西方狍日', '荆豆日', '柏树日', '常春藤日', '叉子圆柏日', '撅头日', '糖枫日', '帚石楠日', '芦苇日', '酸模日', '蟋蟀日', '松子日', '软木橡树日', '松露日', '橄榄日', '铲子日',
            '泥炭日', '烟煤日', '沥青日', '硫磺日', '犬日', '熔岩日', '腐殖土日', '有机肥日', '硝石日', '连枷日', '花岗岩日', '黏土日', '板岩日', '砂岩日', '穴兔日', '燧石日', '泥灰石日', '石灰石日', '大理石日', '簸箕日', '石膏日', '盐日', '铁日', '铜日', '猫日', '锡日', '铅日', '锌日', '汞日', '筲箕日',
            '洋瑞香日', '苔藓日', '假叶树日', '雪花莲日', '公牛日', '地中海荚蒾日', '木蹄层孔菌日', '欧洲瑞香日', '杨树日', '斧头日', '铁筷子日', '青花菜日', '月桂日', '榛树日', '母牛日', '黄杨日', '地衣日', '红豆杉日', '肺草日', '锲日', '菥蓂日', '亚麻叶瑞香日', '匍匐冰草日', '萹蓄日', '野兔日', '菘蓝日', '榛子日', '仙客来日', '白屈菜日', '雪橇日',
            '款冬日', '山茱萸日', '糖芥日', '女桢日', '公山羊日', '细辛日', '意大利鼠李日', '堇菜日', '黄花柳日', '锹日', '水仙日', '榆树日', '球果紫堇日', '钻果大蒜芥日', '家山羊日', '菠菜日', '多榔菊日', '琉璃繁缕日', '法国芫荽日', '合股线日', '茄参日', '香芹日', '假山葵日', '雏菊日', '金枪鱼日', '蒲公英日', '森林银莲花日', '铁线蕨日', '梣树日', '手钻日',
            '报春花日', '悬铃木日', '芦笋日', '郁金香日', '母鸡日', '莙荙菜日', '桦树日', '丁香水仙日', '桤木日', '嫁接刀日', '蔓长春花日', '鹅耳枥日', '羊肚菌日', '欧洲山毛榉日', '蜂日', '生菜日', '落叶松日', '毒芹日', '水萝卜日', '蜂箱日', '南欧紫荆日', '萝蔓莴苣日', '欧洲七叶树日', '芝麻菜日', '鸽子日', '欧丁香日', '秋牡丹日', '三色堇日', '山桑子日', '孵蛋器日',
            '庭园玫瑰日', '橡树日', '蕨日', '山楂日', '夜莺日', '耧斗菜日', '铃兰日', '蘑菇日', '风信子日', '耙日', '大黄日', '红豆草日', '蒲草日', '硬骨忍冬日', '蚕日', '聚合草日', '小地榆日', '金庭荠日', '榆钱菠菜日', '锄日', '海石竹日', '贝母日', '玻璃苣日', '缬草日', '鲤鱼日', '欧卫矛日', '虾夷葱日', '牛舌草日', '白芥日', '牧羊曲柄杖日',
            '紫花苜蓿日', '萱草日', '三叶草日', '当归日', '鸭子日', '蜜蜂花日', '燕麦草日', '头巾百合日', '欧百里香日', '大镰日', '草莓日', '药水苏日', '豌豆日', '刺槐日', '鹌鹑日', '康乃馨日', '接骨木日', '罂粟日', '椴树日', '草叉日', '矢车菊日', '果香菊日', '忍冬日', '猪殃殃日', '丁鱥日', '茉莉日', '马鞭草日', '百里香日', '芍药日', '运货马车日',
            '黑麦日', '燕麦日', '洋葱日', '婆婆纳日', '骡子日', '迷迭香日', '黄瓜日', '分葱日', '苦艾日', '镰刀日', '芫荽日', '菜蓟日', '丁子香日', '熏衣草日', '臆羚日', '烟草日', '红加仑日', '香豌豆日', '樱桃日', '公园日', '薄荷日', '孜然日', '菜豆日', '紫朱草日', '珍珠鸡日', '鼠尾草日', '大蒜日', '蚕豆日', '小麦日', '萧姆管日',
            '斯佩耳特小麦日', '毛蕊花日', '甜瓜日', '毒麦日', '公羊日', '木贼日', '蒿日', '红花日', '黑莓日', '喷壶日', '柳枝稷日', '盐角草日', '杏日', '罗勒日', '母绵羊日', '药蜀葵日', '亚麻日', '扁桃日', '龙胆日', '船闸日', '刺苞术日', '续随子日', '小扁豆日', '旋覆花日', '水獭日', '香桃木日', '西洋油菜日', '羽扇豆日', '棉花日', '磨坊日',
            '李子日', '小米日', '马勃日', '六棱大麦日', '鲑鱼日', '晚香玉日', '六棱麦日', '夹竹桃日', '甘草日', '折梯日', '西瓜日', '茴香日', '刺檗日', '核桃日', '鳟鱼日', '柠檬日', '起绒草日', '鼠李日', '万寿菊日', '篮日', '狗蔷薇日', '榛子日', '啤酒花日', '高粱日', '螯虾日', '酸橙日', '一枝黄花日', '玉米日', '甜栗日', '篮子日',
            '美德日', '天才日', '劳动日', '舆论日', '奖励日']
LeapYearDay_FR = RegularYearDay_FR + ['Jour de la Révolution']
LeapYearDay_CH = RegularYearDay_CH + ['革命日']
CH_number = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
XiZ = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手']
WeekCn = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏",
        "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降",
        "立冬", "小雪", "大雪"]
HeavenlyStems = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
EarthlyBranches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
LunarMonths = ['正月', '二月', '三月', '四月', '五月', '六月',
               '七月', '八月', '九月', '十月', '十一月', '十二月']
Months = ['一月', '二月', '三月', '四月', '五月', '六月',
          '七月', '八月', '九月', '十月', '十一月', '十二月']
JapMonths = ['睦月', '如月', '弥生', '卯月', '皐月', '水無月',
             '文月', '葉月', '長月', '神無月', '霜月', '師走']
LunarDays = ['初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十',
               '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十',
               '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十']
CHDays = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十',
          '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十',
          '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十',
          '三十一']
CHYear = ['元', '二', '三', '四', '五', '六', '七', '八', '九', '十',
          '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十',
          '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十',
          '三十一', '三十二', '三十三', '三十四', '三十五', '三十六', '三十七', '三十八', '三十九', '四十',
          '四十一', '四十二', '四十三', '四十四', '四十五', '四十六', '四十七', '四十八', '四十九', '五十',
          '五十一', '五十二', '五十三', '五十四', '五十五', '五十六', '五十七', '五十八', '五十九', '六十',
          '六十一', '六十二', '六十三', '六十四', '六十五', '六十六', '六十七', '六十八', '六十九', '七十',
          '七十一', '七十二', '七十三', '七十四', '七十五', '七十六', '七十七', '七十八', '七十九', '八十',
          '八十一', '八十二', '八十三', '八十四', '八十五', '八十六', '八十七', '八十八', '八十九', '九十',
          '九十一', '九十二', '九十三', '九十四', '九十五', '九十六', '九十七', '九十八', '九十九', '一百',
          '一百零一', '一百零二', '一百零三', '一百零四', '一百零五', '一百零六', '一百零七', '一百零八', '一百零九', '一百一十',
          '一百一十一', '一百一十二', '一百一十三', '一百一十四', '一百一十五', '一百一十六', '一百一十七', '一百一十八', '一百一十九', '一百二十',
          '一百二十一', '一百二十二', '一百二十三', '一百二十四', '一百二十五', '一百二十六', '一百二十七', '一百二十八', '一百二十九', '一百三十',
          '一百三十一', '一百三十二', '一百三十三', '一百三十四', '一百三十五', '一百三十六', '一百三十七', '一百三十八', '一百三十九', '一百四十',
          '一百四十一', '一百四十二', '一百四十三', '一百四十四', '一百四十五', '一百四十六', '一百四十七', '一百四十八', '一百四十九', '一百五十']
ch_eras = [("洪武", 1368), ("建文", 1399), ("永乐", 1403),
        ("洪熙", 1425), ("宣德", 1426), ("正统", 1436), ("景泰", 1450),
        ("天顺", 1457), ("成化", 1465), ("弘治", 1488), ("正德", 1506),
        ("嘉靖", 1522), ("隆庆", 1567), ("万历", 1573), ("天启", 1621), ("崇祯", 1628),

        ("顺治", 1644), ("康熙", 1662), ("雍正", 1723), ("乾隆", 1736),
        ("嘉庆", 1796), ("道光", 1821), ("咸丰", 1851),
        ("同治", 1862), ("光绪", 1875), ("宣统", 1909)]
jp_eras = [ # 北朝
        ("应安", 1368), ("永和", 1375), ("康历", 1379), ("永德", 1381),
        ("至德", 1384), ("嘉庆", 1387), ("康应", 1389), ("明德", 1390),
            # 明德统一以后
        ("应永", 1394), ("正长", 1428),
        ("永享", 1429), ("嘉吉", 1441), ("文安", 1444), ("宝德", 1449),
        ("享德", 1452), ("康正", 1455), ("长禄", 1457), ("宽正", 1460),
        ("文正", 1466), ("应仁", 1467), ("文明", 1469), ("长享", 1487), ("延德", 1489), ("明应", 1492),
        ("文龟", 1501), ("永正", 1504), ("大永", 1521), ("享禄", 1528), ("天文", 1532), ("弘治", 1555), ("永禄", 1558),
            # 安土桃山时代
        ("元龟", 1570), ("天正", 1573), ("文禄", 1592), ("庆长", 1596),

        ("元和", 1615), ("宽永", 1624), ("正保", 1644), ("庆安", 1648), ("承应", 1652),
        ("明历", 1655), ("万治", 1658), ("宽文", 1661), ("延宝", 1673), ("天和", 1681), ("贞享", 1684),
        ("元禄", 1688), ("宝永", 1704), ("正德", 1711), ("享保", 1716),
        ("元文", 1736), ("宽保", 1741), ("延享", 1744), ("宽延", 1748), ("宝历", 1751),
        ("明和", 1764), ("安永", 1772), ("天明", 1781), ("宽政", 1789), ("享和", 1801), ("文化", 1804),
        ("文政", 1818), ("天保", 1830), ("弘化", 1844),
        ("嘉永", 1848), ("安政", 1854), ("万延", 1860), ("文久", 1861), ("元治", 1864), ("庆应", 1865),

        ("明治", 1868), ("大正", 1912), ("昭和", 1926), ("平成", 1989), ("令和", 2019)]


def is_leap(f_year):
    f_year = int(f_year)
    return (f_year % 4 == 0 and f_year % 100 != 0) or (f_year % 400 == 0)


def days_since_last_sep22(given_date: date) -> int:
    year = given_date.year
    sep22_this_year = date(year, 9, 22)

    # 如果当前日期早于9月22日，则需要回到前一年的9月22日
    if given_date < sep22_this_year:
        sep22_last = date(year - 1, 9, 22)
    else:
        sep22_last = sep22_this_year

    delta = given_date - sep22_last
    return delta.days


def FR_CalendrierRepublicain(year, mon, day):
    today = date(year, mon, day)
    sum_days = days_since_last_sep22(today)

    index = (mon - 1)
    if day >= thresholds[index]:
        show_index = (index + 1) % 12
    else:
        show_index = index % 12

    show_index = show_index - 1
    ShowMonFR = Month_FR[show_index]

    if is_leap(year):
        ShowDayFR = LeapYearDay_FR[sum_days]
    else:
        ShowDayFR = RegularYearDay_FR[sum_days]

    return (f'{year}', f'{ShowMonFR}, {ShowDayFR}', show_index)


def CH_CalendrierRepublicain(year, mon, day):
    today = date(year, mon, day)
    sum_days = days_since_last_sep22(today)

    index = (mon - 1)
    if day >= thresholds[index]:
        show_index = (index + 1) % 12
    else:
        show_index = index % 12

    show_index = show_index - 1
    ShowMonCH = Month_CH[show_index]

    if is_leap(year):
        ShowDayCH = LeapYearDay_CH[sum_days]
    else:
        ShowDayCH = RegularYearDay_CH[sum_days]

    to_CH_year = lambda y: ''.join(CH_number[int(d)] for d in str(y))
    return (f'{to_CH_year(year)}年', f'{ShowMonCH}, {ShowDayCH}', show_index)


def SolarCalender(year, month, day, week, solar_terms):
    to_CH_year = lambda y: ''.join(CH_number[int(d)] for d in str(y))
    return (f'{to_CH_year(year)}年', f'{Months[month-1]}{CHDays[day-1]}日{WeekCn[week]}', f'{solar_terms}')


def LunarCalender(year, LunarMonth, LunarDay, leap, solar_terms):
    HSEBYear = HeavenlyStems[(year - 3) % 10 - 1] + EarthlyBranches[(year - 3) % 12 - 1]
    return (f'{HSEBYear}年', f'{leap}{LunarMonths[LunarMonth - 1]}{LunarDays[LunarDay - 1]}', f'{solar_terms}')


def get_chinese_era(year, lunar_year):
    if lunar_year < 1368:
        return "仅支持从洪武（1368年）起的纪年"

    for i in range(len(ch_eras) - 1):
        era_name, start_year = ch_eras[i]
        next_era_start = ch_eras[i + 1][1]
        if start_year <= lunar_year < next_era_start:
            era_year = lunar_year - start_year + 1
            return f"{era_name}{CHYear[era_year-1]}年"
    if year == 1911:
        return "宣统三年"

    return "年份超出支持范围"


def chinese_era(year, mon, day, LunarYear, LunarMonth, LunarDay, leap, solar_terms):
    if year >= 1912:
        return (f'民国{CHYear[year - 1912]}年', f'{Months[mon - 1]}{CHDays[day - 1]}日', f'{solar_terms}')
    else:
        return (f'{get_chinese_era(year, LunarYear)}', f'{leap}{LunarMonths[LunarMonth - 1]}{LunarDays[LunarDay - 1]}', f'{solar_terms}')


def get_japanese_era(year, lunar_year):
    if lunar_year < 1368:
        return "仅支持从应安（1368年）起的纪年"
    if year >= 2019:
        return f"令和{CHYear[year-2019]}年"

    for i in range(len(jp_eras) - 1):
        era_name, start_year = jp_eras[i]
        next_era_start = jp_eras[i + 1][1]

        if start_year <= year < next_era_start:
            era_year = year - start_year + 1
            return f"{era_name}{CHYear[era_year-1]}年"

    return "年份超出支持范围"


def japanese_era(year, mon, day, LunarYear, LunarMonth, LunarDay, leap, solar_terms):
    if year >= 1873:
        return (f'{get_japanese_era(year, LunarYear)}', f'{Months[mon- 1]}{CHDays[day - 1]}日（{JapMonths[mon - 1]}）', f'{solar_terms}')
    else:
        return (f'{get_japanese_era(year, LunarYear)}', f'{leap}{LunarMonths[LunarMonth - 1]}{LunarDays[LunarDay - 1]}（{leap}{JapMonths[LunarMonth - 1]}）', f'{solar_terms}')


def cal_paras(custom, year, mon, day):
    if custom == 0:
        year, mon, day = time.localtime()[:3]

    sxtwldate = sxtwl.fromSolar(year, mon, day)
    week = sxtwldate.getWeek()

    # 以春节为界的农历
    LunarYear = sxtwldate.getLunarYear()
    LunarMonth = sxtwldate.getLunarMonth()
    LunarDay = sxtwldate.getLunarDay()
    leap = '闰' if sxtwldate.isLunarLeap() else ''
    solar_terms = jqmc[sxtwldate.getJieQi()] if sxtwldate.hasJieQi() else ''

    dates = [year, mon, day, week, LunarYear, LunarMonth, LunarDay, leap, solar_terms]
    return dates

# print(SolarCalender(2025, 5, 31, 6))
# print(LunarCalender(year, LunarMonth, LunarDay, leap, solar_terms))
# print(FR_CalendrierRepublicain(year, mon, day))
# print(CH_CalendrierRepublicain(2025, 5, 31))
# print(chinese_era(year, mon, day, LunarYear, LunarMonth, LunarDay, leap, solar_terms))
# print(japanese_era(year, mon, day, LunarYear, LunarMonth, LunarDay, leap, solar_terms))
